﻿//#include "SList.h"
//
//SLTNode* SLByType(SLTDatatype x)
//{
//	SLTNode* newnode = (SLTNode*)malloc(sizeof(SLTDatatype));
//	if (newnode == NULL)
//	{
//		perror("malloc");
//		exit(1);
//	}
//	newnode->data = x;
//	newnode->next = NULL;
//	return newnode;
//}
////尾插
//void SLTPushback(SLTNode** pphead, SLTDatatype x)
//{
//	SLTNode* newnode =  SLByType(x);
//	if (*pphead == NULL)
//	{
//		*pphead = newnode;
//	}
//	else if(*pphead != NULL)
//	{
//		SLTNode* ptail = *pphead;
// 		while (ptail->next)
//		{
//			ptail = ptail->next;
//		}
//		ptail->next = newnode;
//	}
//
//}
//
////打印
//void SLTPrint(SLTNode* phead)
//{
//	assert(phead);
//	SLTNode* ptail = phead;
//	while (ptail )
//	{
//		printf("%d->", ptail->data);
//		ptail = ptail->next;
//	}
//	printf("NULL\n");
//}
////头插
//void SLTPushfront(SLTNode** pphead, SLTDatatype x)
//{
//	assert(pphead);
//	SLTNode* newnode = SLByType(x);
//	newnode->next = *pphead;
//	*pphead = newnode;
//}
//
////尾删
//void SLpopback(SLTNode** pphead)
//{
//	assert(pphead && *pphead);
//	if ((*pphead)->next == NULL)
//	{
//		free(*pphead);
//		*pphead = NULL;
//	}
//	else
//	{
//		SLTNode* prev = *pphead;
//		SLTNode* ptail = *pphead;
//		while (ptail->next)
//		{
//			prev = ptail;
//			ptail = ptail->next;
//		}
//		free(ptail);
//		ptail = NULL;
//		prev->next = NULL;
//	}
//}
////头删
//void SLpopfront(SLTNode** pphead)
//{
//	assert(pphead && *pphead);
//	SLTNode* ptail = (*pphead)->next;
//	free(*pphead);
//	*pphead = ptail; 
//}
////寻找
//SLTNode* SLTFind(SLTNode* phead, SLTDatatype x)
//{
//	SLTNode* ptail = phead;
//	while (phead)
//	{
//		if (ptail->data == x)
//		{
//			return ptail;
//		}
//		ptail = ptail->next;
//	}
//	return NULL;
//}
////在指定位置之前插⼊数据
//void SLTInsert(SLTNode** pphead, SLTNode* pos, SLTDatatype x)
//{
//	assert(pphead&&pos);
//	if (pos == *pphead)
//	{
//		SLTPushfront(pphead, x);
//	}
//	else
//	{
//		SLTNode* newnode = SLByType(x);
//		SLTNode* pcur = *pphead;
//		while (pcur->next != pos)
//		{
//			pcur = pcur->next;
//		}
//		newnode->next = pos;
//		pcur->next = newnode;
//	}
//}
////在指定位置之前插⼊数据
//void SLInsertAfter(SLTNode* pos, SLTDatatype x)
//{
//	assert(pos);
//	SLTNode* newnode = SLByType(x);
//	newnode->next = pos->next;
//	pos->next = newnode;
//}
////删pos
//void SLTErase(SLTNode** pphead, SLTNode* pos)
//{
//	assert(pos && pphead);
//	if (pos == *pphead)
//	{
//		SLpopfront(pphead);
//	}
//	else
//	{
//		SLTNode* pcur = *pphead;
//		while (pcur->next != pos)
//		{
//			pcur = pcur->next;
//		}
//		pcur->next = pos->next;
//		free(pos);
//		pos = NULL;
//	}
//}
////删pos之后
//void SLTEreseAfter(SLTNode* pos)
//{
//	assert(pos);
//	SLTNode* pcur = pos->next->next;
//	free(pos->next);
//	pos->next = pcur;
//}
//
//void SLTDstroy(SLTNode** pphead)
//{
//	while (*pphead)
//	{
//		SLTNode* pcur = (*pphead)->next;
//		free(*pphead);
//		*pphead = pcur;
//	}
//	*pphead = NULL;
//}